/**
 * Created by hl on 2018/4/10.
 * 基于Promise的网络请求库,包含GET POST请求，上传下载功能
 * 使用方法：
 * 先引入： import {get,post,...} from 本文件;
 * · get请求:    get("/index",{id:2}).then(data=>{}).catch(error=>{});
 * · post请求:    post("/index",{id:2}).then(data=>{}).catch(error=>{});
 *  then方法里的参数第一个是成功回调，第二个是失败回调，两个回调都是可选的
 */

/**
 * 服务器根路径
 * @type {string}
 */
export let rootUrlTest = "https://www.sc-xhzt.com/api";//测试环境
// export let rootUrlProduce = "";//正式环境
/**
 * 发送get 请求
 * @param relativeUrl 相对路径 必填
 * @param param 参数 可选
 * @param header 请求头参数 可选
 * @returns {Promise}
 */
export function get(relativeUrl, param, header) {
  return request("GET", relativeUrl, param, header);
}
/**
 * 发送POST请求
 * @param relativeUrl 相对路径 必填
 * @param param 参数 可选
 * @param header 请求头参数 可选
 * @returns {Promise}
 */
export function post(relativeUrl, param, header) {
  console.log('登录传入参数：' + param)
  return request("POST", relativeUrl, param, header);
}

/**
 * 接口请求基类方法
 * @param method 请求方法 必填
 * @param relativeUrl 相对路径 必填
 * @param param 参数 可选
 * @param header 请求头参数 可选
 * @returns {Promise}
 */
export function request(method, relativeUrl, param, header = { 'Content-Type': 'application/x-www-form-urlencoded' }) {

  let response, error;
  param.stoken = 'hcngYT3857h3_ifhg_';

  return new Promise((resolve, reject) => {
    wx.showLoading({
      title: '加载中',
    })
    wx.request({
      url: rootUrlTest + relativeUrl,
      method: method,
      header: header,
      data: param,
      success(res) {
        wx.hideLoading();
        response = res.data;
        resolve(res.data);
        console.log('========请求成功=======')
      },
      fail(data) {
        wx.hideLoading();
        error = data;
        reject(data);
        console.log('========请求失败=======')
      },
      complete() {
        console.info('==============>请求开始<==============');
        console.warn(method, rootUrlTest + relativeUrl);
        if (param) console.warn('参数：', param);
        if (response) {
          console.warn("返回成功：", response);
        } else {
          console.warn("返回失败：", error);
        }
        console.info('==============>请求结束<==============');

      }

    });
  });

}